package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.RequirementsUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.RequirementsDO;
import com.cmc.cloud.cmclink.doc.vo.sovo.requirementsvo.RequirementsCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.requirementsvo.RequirementsRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.requirementsvo.RequirementsUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱附加要求 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface RequirementsConvert {

    RequirementsConvert INSTANCE = Mappers.getMapper(RequirementsConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    RequirementsDO convert(RequirementsCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    List<RequirementsDO> convertBatchUpdate(List<RequirementsUpdateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    List<RequirementsDO> convertBatch(List<RequirementsCreateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    RequirementsDO convert(RequirementsUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    RequirementsRespVO convert(RequirementsDO bean);

    /**
     * 属性转换 convert
     *
     * @param list
     * @return
     */
    List<RequirementsRespVO> convertList(List<RequirementsDO> list);

    /**
     * 属性转换 convert
     *
     * @param list
     * @return
     */
    List<RequirementsDO> convertDoList(List<RequirementsRespVO> list);

    /**
     * 属性转换 convert
     *
     * @param list
     * @return
     */
    List<RequirementsCreateReqVO> convertCreateList(List<RequirementsDO> list);

    /**
     * 属性转换
     *
     * @param requirementsUpdateReqDtoList
     * @return
     */
    List<RequirementsUpdateReqVO> convertRequirementsUpdateReqDto(List<RequirementsUpdateReqDto> requirementsUpdateReqDtoList);

    /**
     * 属性转换
     *
     * @param requirementsUpdateReqVOList
     * @return
     */
    List<RequirementsUpdateReqDto> convertRequirementsUpdateReqVO(List<RequirementsUpdateReqVO> requirementsUpdateReqVOList);

    /**
     * 属性转换
     *
     * @param requirementsDoList
     * @return
     */
    List<RequirementsUpdateReqDto> convertRequirementsUpdateReqDtos(List<RequirementsDO> requirementsDoList);
}
